Introduction

La reconnaissance automatique de la musique est une partie essentielle des logiciels de traitment de musique.

Les résultats d’une reconnaissance automatique sont utilisable dans des applications nombreuses. Beaucoup d’efforts sont

Nous nous sommes intéressés par la transcription de la musique. Ainsi, nous avons choisi de travailler sur ce sujet dans le cadre du projet semestriel. Pendant le développement de ce projet, nous avons dû apprendre les bases du traitement de signaux sonores et par la suite étudier les recherches effectuées sur les méthodes de reconnaissance.

Dans ce rapport, nous présentons une analyse de signaux sonores et une méthode simple de reconnaissance de musique monophones.

Signaux sonores

Son harmonique

Le son d’un résonateur acoustique comme une chorde ou une colonne d’air est une onde stationnaire. On dit que tel son évoque un pitch défini. Dans le cas des instrument de percussion, le son présente une inharmonicité. On dit que tel son évoque un pitch indéfini. Dans ce projet on ne s’intéressera qu’au sons harmoniques de pitch défini.

Un signal sonore de pitch défini, est une série harmonique de sons purs, représenté par des ondes sinusoïdales dont les fréquences sont des multiples entiers d’une fréquence dîte la fondamentale (où le pitch) notée \(f_0\).

\[ x(t) = \sum\limits_{k\in\mathbb{N}} A_k\cdot\cos(2\pi k f_0 t) \]\(A_k\) est l’amplitude de la kème harmonique.

On cherche donc à indentifier f_0 dans un signal harmonique donnée.

La transformée de Fourier et ses variantes

La transformée de Fourier permet d’identifier la fréquence d’une fonction périodique. \[\hat{x}(f) = \int\limits_{-\infty}^{\infty} x(t)\cdot e^{-2\pi j ft}\mathrm{d}t\] Le pic de \(\hat{x}(f)\) correspond à la fréquence du signal \(x(t)\). Comme la transformée de Fourier est linéaire, la transformée d’un signal harmonique produit plusieurs pics.

Linéarité de la transformée de Fourier

Linéarité de la transformée de Fourier

La transformée de Fourier à court terme

Grâce à la transformée de Fourier et sa linéarité on peut obtenir les fréquences d’un signal harmonique. Or, en pratique, un signal sonore change souvent de fréquences, on voudrait donc obtenir la transformée de Fourier en fonction du temps et de la fréquence, la transformée de Fourier à court terme (anglais: Short-Time Fourier Transform) souvent dîte STFT permet d’obtenir tel fonction.

La STFT se calcule à l’aide d’une fonction de fenêtrage \(w\), qui est une fonction à support compact. En effet, la STFT est la transformée de Fourier d’une fonction pondérée avec une fenêtre \(w\) de support compact suffisamment petit. Le principe de cette transformée est analogue au produit de convolution.

\[X(t, f) = \int\limits_{-\infty}^{\infty} x(\tau)\cdot w(\tau-t)\cdot e^{-2\pi j f\tau} \mathrm{d}\tau \]

La transformée de Fourier discrète

Dans ce projet, on voudrais analyser un son enregistré, on étudie donc le signal sur un intervalle fermé en temps discret.

Soit \(N\) le nombre d’échantillons pris sur l’intervalle \([0,t_{\text{max}}[\). On introduit la fréquence d’échantillonnage \(f_s\) dîte en anglais sample rate ou sampling frequency. On a donc \(t_n = \frac{n}{f_s}\) pour \(n\in\{0,1,\dots,N-1\}\).

\[\begin{align} \hat{x}(f) &= \int\limits_{0}^{t_{\text{max}}} x(t)\cdot e^{-2\pi j ft}\mathrm{d}t \\ &= \lim\limits{f_s\rightarrow\infty} \sum\limits_{n=0}^{N-1} x(t_n)\cdot e^{-2\pi j ft_n}\\ &= \lim\limits{f_s\rightarrow\infty} \sum\limits_{n=0}^{N-1} x(t_n)\cdot e^{-2\pi j f \frac{n}{f_s}} \end{align}\]

On note \(x[n] = x(t_n)\) on a donc \[ \hat{x}(f) = \sum\limits_{n=0}^{N-1} x[n]\cdot e^{-2\pi j f \frac{n}{f_s}}\]

On peut également discrétiser la fréquence en définissant \(X[k]=\hat{x}(f)\). \[ X[k] = \sum\limits_{n=0}^{N-1} x[n]\cdot e^{-2\pi j k \frac{n}{f_s}}\]

De même, STFT se discrétise: \[X[n, k] = \sum\limits_{n=0}^{N-1} x[m]\cdot w[m-n]\cdot e^{-2\pi j k \frac{m}{f_s}}\]

Cette partie est une sur-simplification du théroème d’échantillonnage de Nyquist-Shannon.

Fenêtrage

Il existe une infinité de fenêtres à utiliser dans les calculs. La plus simple est la fonction rectangulaire, mais nous avons utilisé dans l’intégralité du projet la fonction Hann.

Le choix de la fonction est basé sur un le phénomène du aliasing qui rend les signaux indisntinguables lors de l’échantillonnage. En effet, la fenêtre Hann cause peu de aliasing d’où notre choix.

\[w[n] = \sin^2\left(\frac{\pi n}{N -1}\right) =\frac{1}{2}\left(1-\cos\left(\frac{2\pi n}{N -1}\right)\right)\] La fenêtre Hann est sa transformée de Fourier

Spectrogramme

Pitch

Ils existent plusieurs algorithmes de détection de fréqences fondamentales, il y’en a deux types : applications sur le domaine temporel et sur le domaine fréquenciel. Les applications sur le domaine fréquenciel calculent les fréquences à partir de la transformée de Fourier du signal, où les méthodes du domaine temporel les calcules à partir du signal sans passer par la transformée de Fourier.

Chaque type présente des avantages et des inconvénients. Nous avons décidé d’implémenter une de chaque type:

YIN

L’algorithme de YIN (Kawahara et de Cheveigné, 2002) est une méthode robuste pour la reconnaissance du pitch, il s’agit d’un modèle temporel. Son principe est la séléction de fréquences candidats parmi toutes les fréquences détéctés sur l’intervalle de fenêtrage.

La méthode propose que l’expression \(x(t)-x(t+\tau)\) atteint son minimum quand \(\tau\) est égale à la période du signal (i.e. \(\frac{1}{f_0}\)). En diffinissant la fonction de différence à l’instant \(t\) fixé: \[ d_t(\tau) = \int\limits_{t}^{t+T_w} \left(x(t)-x(t+\tau)\right)^2 \mathrm{d}t \]\(T_w\) est la taille de la fenêtre \(w\), on appelle \(\tau\) le retard (anglais: lag).

Soit en temps discret: \[ d_n[m] = \sum\limits_{i=n+1}^{n+N_w} \left(x[n]-x[n+m]\right)^2 \]

Par la suite, on calcule la fonction de la moyenne cumulative définie par: \[d_t'(\tau) = \begin{cases} 1 &\text{si} \tau = 0\\ d_t(\tau) / \frac{1}{\tau}\int\limits_{0}^{\tau}d_t(u)\mathrm{d}u &\text{sinon} \end{cases}\] Soit en temps discret: \[d_n'[m] = \begin{cases} 1 &\text{si} m = 0\\ d_n[m] / \frac{1}{m}\sum\limits_{i=0}^{m}d_t[i] &\text{sinon} \end{cases}\]

Les candidats sont les minimums locaux de \(d_n'\).

YIN spectrale

L’algorithme de YIN spectrale (Paul Brossier, 2006) est une méthode qui utilise la même logique de l’algorithme de YIN et l’applique sur la STFT.

La fonction de différence est définie par: \[ \hat{d}_n[m] = \frac{2}{N} \sum\limits_{k=0}^{\frac{N}{2}+1} \left\lvert\left( 1-e^{2\pi jkm/N} \right) X[n,k] \right\rvert^2 \]

La fonction de la moyenne cumulative se calcule de façon analogue à l’algorithme de YIN. L’algorithme cherche le minimum globale de cette dernière.

Segmentation temporelle

L’étape fondamentale dans la reconnaissance du son est la segmentation temporelle. Il s’agit de trouver les frontières des objets sonores, c’est-à-dire:

  • Le début de la note – dît onset.
  • La fin de la note – dît offset.

Attack, transient, decay, onset
IEEE TRANSACTIONS ON SPEECH AND AUDIO PROCESSING, VOL. 13, NO. 5, SEPTEMBER 2005

Cette étape dépend fortement sur le type du son produit; les instrument à chordes pincées (guitare, piano, oud, etc.) ont un profile différent de celui des instruments à cordes frottées (la famille du violon) ou de celle des instruments à vent.

Dans cette partie on expliquera les méthodes implémentés pour la reconnaissance du onset.

Méthode

La lecture scientifique indique une méthode rigoureuse qu’on a simplifier pour obtenir des résultats rapide.

Il s’agit de définir une fonction qui permet de quantifier la perturbation du signal à un moment donné, cette fonction est souvent appellée Onset Detection Function ou Onset Strength Signal, dans ce projet on fera référence à cette dernière par Onset Detection Function ou ODF.

Théoriquement, les maximums locaux de l’ODF sont les onsets du signal, mais en pratique il s’agit d’un sous-ensemble de ces points. En effet, l’ODF est souvent très sensible et détectera la moindre des perturbations.

Ce problème pourra être résolu en définissant un seuil au dessous duquel aucun onset est considéré. Ils existent plusieurs méthodes pour définir tel seuil.

Soit un seuil fixe, ce qui minimise le coût des calculs au prix de la qualité des résultats. Soit de calculer un seuil variable par des méthodes classiques comme la moyenne mobile.

La méthode consiste donc en trois étapes: 1. Calcul de l’Onset Detection Function. 2. Thresholding: calcul du seuil. 3. Peak-picking: la selection des onsets.

Onset Detection Function (ODF)

Ils existent plusieurs fonction de détéction d’onsets, on expliquera quelques unes qui se basent sur la STFT.

High Frequency Content (HFC)

Il s’agit de priviligier les fréquences élevées dans un signal: \[ HFC[n] = \sum\limits_{k=1}^{N}k\cdot\left\lvert X[n,k]\right\rvert^2 \]

Phase Deviation

Complex Distance